class AviatorBoolean extends AviatorObject {

  /**
   *
   */
  private static final long serialVersionUID = -685795150869373183L;

  Boolean value;

  public static final AviatorBoolean TRUE = new AviatorBoolean(Boolean.TRUE);

  public static final AviatorBoolean FALSE = new AviatorBoolean(Boolean.FALSE);


  @Override
  public AviatorObject not(final Map<String, Object> env) {
    return this.value.booleanValue() ? FALSE : TRUE;
  }


  @Override
  public final boolean booleanValue(final Map<String, Object> env) {
    return this.value.booleanValue();
  }

  public boolean getBooleanValue() {
    return this.value;
  }

  @Override
  public AviatorObject add(final AviatorObject other, final Map<String, Object> env) {
    switch (other.getAviatorType()) {
      case String:
        return new AviatorString(this.value.toString() + ((AviatorString) other).getLexeme(env));
      case JavaType:
        AviatorJavaType javaType = (AviatorJavaType) other;
        final Object otherJavaValue = javaType.getValue(env);
        if (TypeUtils.isString(otherJavaValue)) {
          return new AviatorString(this.value.toString() + otherJavaValue.toString());
        } else {
          return super.add(other, env);
        }
      default:
        return super.add(other, env);
    }

  }


  @Override
  public AviatorType getAviatorType() {
    return AviatorType.Boolean;
  }


  @Override
  public final Object getValue(final Map<String, Object> env) {
    return this.value;
  }


  private AviatorBoolean(final Boolean value) {
    super();
    this.value = value;
  }


  public static AviatorBoolean valueOf(final boolean b) {
    return b ? AviatorBoolean.TRUE : AviatorBoolean.FALSE;
  }


  @Override
  public int innerCompare(final AviatorObject other, final Map<String, Object> env) {<FILL_FUNCTION_BODY>}

}

    switch (other.getAviatorType()) {
      case Boolean:
        AviatorBoolean otherBoolean = (AviatorBoolean) other;
        return this.value.compareTo(otherBoolean.value);
      case JavaType:
        AviatorJavaType javaType = (AviatorJavaType) other;
        final Object otherValue = javaType.getValue(env);
        if (otherValue == null) {
          return 1;
        }
        if (otherValue instanceof Boolean) {
          return this.value.compareTo((Boolean) otherValue);
        } else {
          throw new CompareNotSupportedException(
              "Could not compare " + desc(env) + " with " + other.desc(env));
        }
      case Nil:
        return 1;
      default:
        throw new CompareNotSupportedException(
            "Could not compare " + desc(env) + " with " + other.desc(env));
    }

  
<methods>public non-sealed void <init>() ,public com.googlecode.aviator.runtime.type.AviatorObject add(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject bitAnd(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject bitNot(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject bitOr(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject bitXor(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public boolean booleanValue(Map<java.lang.String,java.lang.Object>) ,public int compare(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public int compareEq(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject defineValue(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject deref(Map<java.lang.String,java.lang.Object>) ,public java.lang.String desc(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject div(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject exponent(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public abstract com.googlecode.aviator.runtime.type.AviatorType getAviatorType() ,public com.googlecode.aviator.runtime.type.AviatorObject getElement(Map<java.lang.String,java.lang.Object>, com.googlecode.aviator.runtime.type.AviatorObject) ,public Map<java.lang.Object,java.lang.Object> getMetadata() ,public abstract java.lang.Object getValue(Map<java.lang.String,java.lang.Object>) ,public abstract int innerCompare(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public boolean isNull(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject match(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public java.lang.Object meta(java.lang.Object) ,public com.googlecode.aviator.runtime.type.AviatorObject mod(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject mult(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject neg(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject not(Map<java.lang.String,java.lang.Object>) ,public java.lang.Number numberValue(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject setValue(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject shiftLeft(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject shiftRight(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public java.lang.String stringValue(Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject sub(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public java.lang.String toString() ,public com.googlecode.aviator.runtime.type.AviatorObject unsignedShiftRight(com.googlecode.aviator.runtime.type.AviatorObject, Map<java.lang.String,java.lang.Object>) ,public com.googlecode.aviator.runtime.type.AviatorObject withMeta(java.lang.Object, java.lang.Object) ,public com.googlecode.aviator.runtime.type.AviatorObject withoutMeta(java.lang.Object) <variables>protected Map<java.lang.Object,java.lang.Object> metadata,private static final long serialVersionUID