Program: 28225
Project: 28225
Buggy source:
/** 
 * Creates a   {@link ClosureReverseAbstractInterpreter}.
 */
ClosureReverseAbstractInterpreter(CodingConvention convention,final JSTypeRegistry typeRegistry){
  super(convention,typeRegistry);
  this.restricters=new ImmutableMap.Builder<String,Function<TypeRestriction,JSType>>().put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getRestrictedWithoutUndefined(p.type);
      }
 else {
        return null;
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getNativeType(NULL_TYPE);
      }
 else {
        return getRestrictedWithoutNull(p.type);
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getRestrictedWithoutUndefined(getRestrictedWithoutNull(p.type));
      }
 else {
        return null;
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      Visitor<JSType> visitor=p.outcome ? restrictToArrayVisitor : restrictToNotArrayVisitor;
      return p.type == null ? null : p.type.visit(visitor);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      Visitor<JSType> visitor=p.outcome ? restrictToObjectVisitor : restrictToNotObjectVisitor;
      return p.type == null ? null : p.type.visit(visitor);
    }
  }
).build();
}

Fixed version (ground truth):
/** 
 * Creates a   {@link ClosureReverseAbstractInterpreter}.
 */
ClosureReverseAbstractInterpreter(CodingConvention convention,final JSTypeRegistry typeRegistry){
  super(convention,typeRegistry);
  this.restricters=new ImmutableMap.Builder<String,Function<TypeRestriction,JSType>>().put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getRestrictedWithoutUndefined(p.type);
      }
 else {
        return null;
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getNativeType(NULL_TYPE);
      }
 else {
        return getRestrictedWithoutNull(p.type);
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.outcome) {
        return getRestrictedWithoutUndefined(getRestrictedWithoutNull(p.type));
      }
 else {
        return null;
      }
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      return getRestrictedByTypeOfResult(p.type,"String_Node_Str",p.outcome);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.type == null) {
        return p.outcome ? getNativeType(ARRAY_TYPE) : null;
      }
      Visitor<JSType> visitor=p.outcome ? restrictToArrayVisitor : restrictToNotArrayVisitor;
      return p.type.visit(visitor);
    }
  }
).put("String_Node_Str",new Function<TypeRestriction,JSType>(){
    public JSType apply(    TypeRestriction p){
      if (p.type == null) {
        return p.outcome ? getNativeType(OBJECT_TYPE) : null;
      }
      Visitor<JSType> visitor=p.outcome ? restrictToObjectVisitor : restrictToNotObjectVisitor;
      return p.type.visit(visitor);
    }
  }
).build();
}