Example usage for org.eclipse.jdt.internal.compiler.lookup TypeIds T_void

List of usage examples for org.eclipse.jdt.internal.compiler.lookup TypeIds T_void

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.lookup TypeIds T_void.

Prototype

int T_void

To view the source code for org.eclipse.jdt.internal.compiler.lookup TypeIds T_void.

Click Source Link

Usage

From source file:com.google.gwt.dev.jjs.impl.TypeMap.java

License:Apache License

private JNode internalGet(Binding binding, boolean failOnNull) {
    JNode cached = crossRefMap.get(binding);
    if (cached != null) {
        return cached;
    } else if (binding instanceof BaseTypeBinding) {
        BaseTypeBinding baseTypeBinding = (BaseTypeBinding) binding;
        // see org.eclipse.jdt.internal.compiler.lookup.TypeIds constants
        switch (baseTypeBinding.id) {
        case TypeIds.T_JavaLangObject:
            // here for consistency, should already be cached
            return program.getTypeJavaLangObject();
        case TypeIds.T_char:
            return program.getTypePrimitiveChar();
        case TypeIds.T_byte:
            return program.getTypePrimitiveByte();
        case TypeIds.T_short:
            return program.getTypePrimitiveShort();
        case TypeIds.T_boolean:
            return program.getTypePrimitiveBoolean();
        case TypeIds.T_void:
            return program.getTypeVoid();
        case TypeIds.T_long:
            return program.getTypePrimitiveLong();
        case TypeIds.T_double:
            return program.getTypePrimitiveDouble();
        case TypeIds.T_float:
            return program.getTypePrimitiveFloat();
        case TypeIds.T_int:
            return program.getTypePrimitiveInt();
        case TypeIds.T_JavaLangString:
            // here for consistency, should already be cached
            return program.getTypeJavaLangString();
        case TypeIds.T_null:
            return program.getTypeNull();
        case TypeIds.T_undefined:
        default://  w  w w  .j  a  v a  2s  . com
            return null;
        }
    } else if (binding instanceof ArrayBinding) {
        ArrayBinding arrayBinding = (ArrayBinding) binding;
        JType elementType = (JType) get(arrayBinding.elementsType(), failOnNull);
        if (elementType == null) {
            return null;
        }
        return program.getTypeArray(elementType);
    } else if (binding instanceof BinaryTypeBinding) {
        BinaryTypeBinding binaryBinding = (BinaryTypeBinding) binding;
        String name = BuildTypeMap.dotify(binaryBinding.compoundName);

        // There may be many BinaryTypeBindings for a single binary type
        JDeclaredType type = externalTypesByName.get(name);
        if (type != null) {
            put(binding, type);
        }
        return type;
    } else if (binding instanceof MethodBinding) {
        MethodBinding b = (MethodBinding) binding;
        JMethod cachedMethod = (JMethod) crossRefMap.get(b);
        if (cachedMethod == null) {
            JDeclaredType type = (JDeclaredType) get(b.declaringClass, failOnNull);
            if (type == null) {
                return type;
            }
            cachedMethod = getMethodForBinding(type, b);
            if (cachedMethod != null) {
                put(b, cachedMethod);
            }
        } else {
            // Happens sometimes when looking up the type to resolve the binding
            // causes us to also resolve the binding.
        }

        return cachedMethod;
    } else if (binding instanceof FieldBinding) {
        FieldBinding b = (FieldBinding) binding;
        JField cachedField = (JField) crossRefMap.get(b);

        if (cachedField == null) {
            JDeclaredType type = (JDeclaredType) get(b.declaringClass, failOnNull);
            if (type == null) {
                return null;
            }
            cachedField = getFieldForBinding(type, b);
            if (cachedField != null) {
                put(b, cachedField);
            }
        } else {
            // Happens sometimes when looking up the type to resolve the binding
            // causes us to also resolve the binding.
        }

        return cachedField;
    }

    return null;
}

From source file:com.redhat.ceylon.eclipse.core.model.loader.JDTType.java

License:Open Source License

private TypeKind findKind() {
    if (type instanceof ArrayBinding)
        return TypeKind.ARRAY;
    if (type instanceof TypeVariableBinding)
        return TypeKind.TYPEVAR;
    if (type instanceof WildcardBinding)
        return TypeKind.WILDCARD;
    if (type instanceof BaseTypeBinding) {
        switch (type.id) {
        case TypeIds.T_boolean:
            return TypeKind.BOOLEAN;
        case TypeIds.T_byte:
            return TypeKind.BYTE;
        case TypeIds.T_char:
            return TypeKind.CHAR;
        case TypeIds.T_short:
            return TypeKind.SHORT;
        case TypeIds.T_int:
            return TypeKind.INT;
        case TypeIds.T_long:
            return TypeKind.LONG;
        case TypeIds.T_float:
            return TypeKind.FLOAT;
        case TypeIds.T_double:
            return TypeKind.DOUBLE;
        case TypeIds.T_void:
            return TypeKind.VOID;
        }//from www.j  a va2  s . c o  m
    }
    if (type instanceof ReferenceBinding)
        return TypeKind.DECLARED;
    throw new RuntimeException("Unknown type: " + type);
}

From source file:com.redhat.ceylon.eclipse.core.model.mirror.JDTMethod.java

License:Open Source License

public JDTMethod(JDTClass enclosingClass, MethodBinding method) {
    this.enclosingClass = enclosingClass;
    bindingRef = new WeakReference<MethodBinding>(method);
    name = new String(method.selector);
    readableName = new String(method.readableName());
    isStatic = method.isStatic();//w ww.j a  v  a 2s  .  c  o  m
    isPublic = method.isPublic();
    isConstructor = method.isConstructor();
    isStaticInit = method.selector == TypeConstants.CLINIT; // TODO : check if it is right
    isAbstract = method.isAbstract();
    isFinal = method.isFinal();
    isProtected = method.isProtected();
    isDefaultAccess = method.isDefault();
    isDeclaredVoid = method.returnType.id == TypeIds.T_void;
    isVariadic = method.isVarargs();
    isDefault = method.getDefaultValue() != null;
    bindingKey = method.computeUniqueKey();
    if (method instanceof ProblemMethodBinding) {
        annotations = new HashMap<>();
        parameters = Collections.emptyList();
        returnType = JDTType.UNKNOWN_TYPE;
        typeParameters = Collections.emptyList();
        isOverriding = false;
        isOverloading = false;
    }
}

From source file:com.redhat.ceylon.eclipse.core.model.mirror.UnknownTypeMirror.java

License:Open Source License

public JDTType(TypeBinding type, IdentityHashMap<TypeBinding, JDTType> originatingTypes) {
    originatingTypes.put(type, this);

    // type params are not qualified
    if (type instanceof TypeVariableBinding)
        qualifiedName = new String(type.qualifiedSourceName());
    else/* www  .j a  v a 2s . c  o  m*/
        qualifiedName = JDTUtils.getFullyQualifiedName(type);

    typeKind = findKind(type);

    isPrimitive = type.isBaseType() && type.id != TypeIds.T_void && type.id != TypeIds.T_null;

    isRaw = type.isRawType();

    if (type instanceof ParameterizedTypeBinding && !(type instanceof RawTypeBinding)) {
        TypeBinding[] javaTypeArguments = ((ParameterizedTypeBinding) type).arguments;
        if (javaTypeArguments == null) {
            javaTypeArguments = new TypeBinding[0];
        }
        typeArguments = new ArrayList<TypeMirror>(javaTypeArguments.length);
        for (TypeBinding typeArgument : javaTypeArguments)
            typeArguments.add(toTypeMirror(typeArgument, type, this, originatingTypes));
    } else {
        typeArguments = Collections.emptyList();
    }

    if (type instanceof ArrayBinding) {
        TypeBinding jdtComponentType = ((ArrayBinding) type).elementsType();
        componentType = toTypeMirror(jdtComponentType, type, this, originatingTypes);
    } else {
        componentType = null;
    }

    if (type.isWildcard()) {
        WildcardBinding wildcardBinding = (WildcardBinding) type;
        if (wildcardBinding.boundKind == Wildcard.EXTENDS) {
            TypeBinding upperBoundBinding = wildcardBinding.bound;
            if (upperBoundBinding != null) {
                upperBound = toTypeMirror(upperBoundBinding, type, this, originatingTypes);
            }
        }
    } else if (type.isTypeVariable()) {
        TypeVariableBinding typeVariableBinding = (TypeVariableBinding) type;
        TypeBinding boundBinding = typeVariableBinding.firstBound; // TODO : we should confirm this
        if (boundBinding != null) {
            upperBound = toTypeMirror(boundBinding, type, this, originatingTypes);
        }
    } else {
        upperBound = null;
    }

    if (type.isWildcard()) {
        WildcardBinding wildcardBinding = (WildcardBinding) type;
        if (wildcardBinding.boundKind == Wildcard.SUPER) {
            TypeBinding lowerBoundBinding = wildcardBinding.bound;
            if (lowerBoundBinding != null) {
                lowerBound = toTypeMirror(lowerBoundBinding, type, this, originatingTypes);
            }
        }
    }

    if (type instanceof ParameterizedTypeBinding || type instanceof SourceTypeBinding
            || type instanceof BinaryTypeBinding) {
        ReferenceBinding refBinding = (ReferenceBinding) type;
        declaredClass = new JDTClass(refBinding, JDTModelLoader.toType(refBinding));
    }

    if (type instanceof TypeVariableBinding) {
        typeParameter = new JDTTypeParameter((TypeVariableBinding) type, this, originatingTypes);
    }
}

From source file:com.redhat.ceylon.eclipse.core.model.mirror.UnknownTypeMirror.java

License:Open Source License

private TypeKind findKind(TypeBinding type) {
    if (type instanceof ArrayBinding)
        return TypeKind.ARRAY;
    if (type instanceof TypeVariableBinding)
        return TypeKind.TYPEVAR;
    if (type instanceof WildcardBinding)
        return TypeKind.WILDCARD;
    if (type instanceof BaseTypeBinding) {
        switch (type.id) {
        case TypeIds.T_boolean:
            return TypeKind.BOOLEAN;
        case TypeIds.T_byte:
            return TypeKind.BYTE;
        case TypeIds.T_char:
            return TypeKind.CHAR;
        case TypeIds.T_short:
            return TypeKind.SHORT;
        case TypeIds.T_int:
            return TypeKind.INT;
        case TypeIds.T_long:
            return TypeKind.LONG;
        case TypeIds.T_float:
            return TypeKind.FLOAT;
        case TypeIds.T_double:
            return TypeKind.DOUBLE;
        case TypeIds.T_void:
            return TypeKind.VOID;
        case TypeIds.T_null:
            return TypeKind.NULL;
        }//from   w  w  w .j a  v  a 2s .c o  m
    }
    if (type instanceof ReferenceBinding)
        return TypeKind.DECLARED;
    throw new RuntimeException("Unknown type: " + type);
}

From source file:lombok.eclipse.handlers.EclipseHandlerUtil.java

License:Open Source License

public static TypeReference makeType(TypeBinding binding, ASTNode pos, boolean allowCompound) {
    int dims = binding.dimensions();
    binding = binding.leafComponentType();

    // Primitives

    char[] base = null;

    switch (binding.id) {
    case TypeIds.T_int:
        base = TypeConstants.INT;/*from ww  w . j  a  va 2s .  com*/
        break;
    case TypeIds.T_long:
        base = TypeConstants.LONG;
        break;
    case TypeIds.T_short:
        base = TypeConstants.SHORT;
        break;
    case TypeIds.T_byte:
        base = TypeConstants.BYTE;
        break;
    case TypeIds.T_double:
        base = TypeConstants.DOUBLE;
        break;
    case TypeIds.T_float:
        base = TypeConstants.FLOAT;
        break;
    case TypeIds.T_boolean:
        base = TypeConstants.BOOLEAN;
        break;
    case TypeIds.T_char:
        base = TypeConstants.CHAR;
        break;
    case TypeIds.T_void:
        base = TypeConstants.VOID;
        break;
    case TypeIds.T_null:
        return null;
    }

    if (base != null) {
        if (dims > 0) {
            TypeReference result = new ArrayTypeReference(base, dims, pos(pos));
            setGeneratedBy(result, pos);
            return result;
        }
        TypeReference result = new SingleTypeReference(base, pos(pos));
        setGeneratedBy(result, pos);
        return result;
    }

    if (binding.isAnonymousType()) {
        ReferenceBinding ref = (ReferenceBinding) binding;
        ReferenceBinding[] supers = ref.superInterfaces();
        if (supers == null || supers.length == 0)
            supers = new ReferenceBinding[] { ref.superclass() };
        if (supers[0] == null) {
            TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
            setGeneratedBy(result, pos);
            return result;
        }
        return makeType(supers[0], pos, false);
    }

    if (binding instanceof CaptureBinding) {
        return makeType(((CaptureBinding) binding).wildcard, pos, allowCompound);
    }

    if (binding.isUnboundWildcard()) {
        if (!allowCompound) {
            TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
            setGeneratedBy(result, pos);
            return result;
        } else {
            Wildcard out = new Wildcard(Wildcard.UNBOUND);
            setGeneratedBy(out, pos);
            out.sourceStart = pos.sourceStart;
            out.sourceEnd = pos.sourceEnd;
            return out;
        }
    }

    if (binding.isWildcard()) {
        WildcardBinding wildcard = (WildcardBinding) binding;
        if (wildcard.boundKind == Wildcard.EXTENDS) {
            if (!allowCompound) {
                return makeType(wildcard.bound, pos, false);
            } else {
                Wildcard out = new Wildcard(Wildcard.EXTENDS);
                setGeneratedBy(out, pos);
                out.bound = makeType(wildcard.bound, pos, false);
                out.sourceStart = pos.sourceStart;
                out.sourceEnd = pos.sourceEnd;
                return out;
            }
        } else if (allowCompound && wildcard.boundKind == Wildcard.SUPER) {
            Wildcard out = new Wildcard(Wildcard.SUPER);
            setGeneratedBy(out, pos);
            out.bound = makeType(wildcard.bound, pos, false);
            out.sourceStart = pos.sourceStart;
            out.sourceEnd = pos.sourceEnd;
            return out;
        } else {
            TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
            setGeneratedBy(result, pos);
            return result;
        }
    }

    // Keep moving up via 'binding.enclosingType()' and gather generics from each binding. We stop after a local type, or a static type, or a top-level type.
    // Finally, add however many nullTypeArgument[] arrays as that are missing, inverse the list, toArray it, and use that as PTR's typeArgument argument.

    List<TypeReference[]> params = new ArrayList<TypeReference[]>();
    /* Calculate generics */ {
        TypeBinding b = binding;
        while (true) {
            boolean isFinalStop = b.isLocalType() || !b.isMemberType() || b.enclosingType() == null;

            TypeReference[] tyParams = null;
            if (b instanceof ParameterizedTypeBinding) {
                ParameterizedTypeBinding paramized = (ParameterizedTypeBinding) b;
                if (paramized.arguments != null) {
                    tyParams = new TypeReference[paramized.arguments.length];
                    for (int i = 0; i < tyParams.length; i++) {
                        tyParams[i] = makeType(paramized.arguments[i], pos, true);
                    }
                }
            }

            params.add(tyParams);
            if (isFinalStop)
                break;
            b = b.enclosingType();
        }
    }

    char[][] parts;

    if (binding.isTypeVariable()) {
        parts = new char[][] { binding.shortReadableName() };
    } else if (binding.isLocalType()) {
        parts = new char[][] { binding.sourceName() };
    } else {
        String[] pkg = new String(binding.qualifiedPackageName()).split("\\.");
        String[] name = new String(binding.qualifiedSourceName()).split("\\.");
        if (pkg.length == 1 && pkg[0].isEmpty())
            pkg = new String[0];
        parts = new char[pkg.length + name.length][];
        int ptr;
        for (ptr = 0; ptr < pkg.length; ptr++)
            parts[ptr] = pkg[ptr].toCharArray();
        for (; ptr < pkg.length + name.length; ptr++)
            parts[ptr] = name[ptr - pkg.length].toCharArray();
    }

    while (params.size() < parts.length)
        params.add(null);
    Collections.reverse(params);

    boolean isParamized = false;

    for (TypeReference[] tyParams : params) {
        if (tyParams != null) {
            isParamized = true;
            break;
        }
    }
    if (isParamized) {
        if (parts.length > 1) {
            TypeReference[][] typeArguments = params.toArray(new TypeReference[0][]);
            TypeReference result = new ParameterizedQualifiedTypeReference(parts, typeArguments, dims,
                    poss(pos, parts.length));
            setGeneratedBy(result, pos);
            return result;
        }
        TypeReference result = new ParameterizedSingleTypeReference(parts[0], params.get(0), dims, pos(pos));
        setGeneratedBy(result, pos);
        return result;
    }

    if (dims > 0) {
        if (parts.length > 1) {
            TypeReference result = new ArrayQualifiedTypeReference(parts, dims, poss(pos, parts.length));
            setGeneratedBy(result, pos);
            return result;
        }
        TypeReference result = new ArrayTypeReference(parts[0], dims, pos(pos));
        setGeneratedBy(result, pos);
        return result;
    }

    if (parts.length > 1) {
        TypeReference result = new QualifiedTypeReference(parts, poss(pos, parts.length));
        setGeneratedBy(result, pos);
        return result;
    }
    TypeReference result = new SingleTypeReference(parts[0], pos(pos));
    setGeneratedBy(result, pos);
    return result;
}

From source file:lombok.eclipse.handlers.HandleActionFunctionAndPredicate.java

License:Open Source License

private boolean matchesReturnType(final MethodBinding method, final String forcedReturnType) {
    if (forcedReturnType == null)
        return true;
    if ("void".equals(forcedReturnType))
        return method.returnType.id == TypeIds.T_void;
    if ("boolean".equals(forcedReturnType))
        return method.returnType.id == TypeIds.T_boolean;
    return false;
}

From source file:lombok.eclipse.handlers.HandleBuilder.java

License:Open Source License

private MethodDeclaration generateCleanMethod(List<BuilderFieldData> builderFields, EclipseNode builderType,
        ASTNode source) {/*from  ww w .  j a v  a 2  s .  c om*/
    List<Statement> statements = new ArrayList<Statement>();

    for (BuilderFieldData bfd : builderFields) {
        if (bfd.singularData != null && bfd.singularData.getSingularizer() != null) {
            bfd.singularData.getSingularizer().appendCleaningCode(bfd.singularData, builderType, statements);
        }
    }

    FieldReference thisUnclean = new FieldReference(CLEAN_FIELD_NAME, 0);
    thisUnclean.receiver = new ThisReference(0, 0);
    statements.add(new Assignment(thisUnclean, new FalseLiteral(0, 0), 0));
    MethodDeclaration decl = new MethodDeclaration(
            ((CompilationUnitDeclaration) builderType.top().get()).compilationResult);
    decl.selector = CLEAN_METHOD_NAME;
    decl.modifiers = ClassFileConstants.AccPrivate;
    decl.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG;
    decl.returnType = TypeReference.baseTypeReference(TypeIds.T_void, 0);
    decl.statements = statements.toArray(new Statement[0]);
    decl.traverse(new SetGeneratedByVisitor(source), (ClassScope) null);
    return decl;
}

From source file:lombok.eclipse.handlers.HandleRelations.java

License:Open Source License

private static MethodDeclaration createSetReferencedObjectMethod(FieldDeclaration fieldDecl, ASTNode source,
        String relatedFieldName, boolean isOneToOne, boolean isUnique, TypeReference baseType,
        TypeReference referenceType, CompilationUnitDeclaration compilationUnitDeclaration) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long) pS << 32 | pE;

    TypeReference refType = fieldDecl.type;

    if (isUnique) {
        refType = new ParameterizedQualifiedTypeReference(Eclipse.fromQualifiedName(List.class.getName()),
                new TypeReference[][] { null, null, new TypeReference[] { refType } }, 0,
                new long[] { p, p, p });
        setGeneratedBy(refType, source);
        refType.sourceStart = pS;/*from w  w w.  j  a  va2 s .com*/
        refType.sourceEnd = pE;
    }

    MethodDeclaration setReferencedObject = new MethodDeclaration(compilationUnitDeclaration.compilationResult);
    setGeneratedBy(setReferencedObject, source);
    setReferencedObject.modifiers = ClassFileConstants.AccPublic;
    setReferencedObject.annotations = new Annotation[] {
            makeMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, source) };
    setReferencedObject.returnType = TypeReference.baseTypeReference(TypeIds.T_void, 0);
    setReferencedObject.returnType.sourceStart = pS;
    setReferencedObject.returnType.sourceEnd = pE;
    setReferencedObject.arguments = new Argument[] {
            new Argument("item".toCharArray(), 0, baseType, ClassFileConstants.AccFinal),
            new Argument("related".toCharArray(), 0, refType, ClassFileConstants.AccFinal), };
    setGeneratedBy(setReferencedObject.arguments[0], source);
    setGeneratedBy(setReferencedObject.arguments[1], source);
    setReferencedObject.arguments[0].sourceStart = pS;
    setReferencedObject.arguments[0].sourceEnd = pE;
    setReferencedObject.arguments[1].sourceStart = pS;
    setReferencedObject.arguments[1].sourceEnd = pE;
    setReferencedObject.selector = "setReferencedObject".toCharArray();
    setReferencedObject.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG;
    setReferencedObject.bodyStart = setReferencedObject.declarationSourceStart = setReferencedObject.sourceStart = source.sourceStart;
    setReferencedObject.bodyEnd = setReferencedObject.declarationSourceEnd = setReferencedObject.sourceEnd = source.sourceEnd;

    List<Statement> statements = new ArrayList<Statement>();

    SingleNameReference fieldNameRef = new SingleNameReference("related".toCharArray(), p);
    setGeneratedBy(fieldNameRef, source);
    Expression fieldRef = createFieldAccessor(new String(fieldDecl.name), source, "item".toCharArray());
    setGeneratedBy(fieldRef, source);
    fieldRef.sourceStart = pS;
    fieldRef.sourceEnd = pE;

    if (isUnique) {
        MessageSend get = new MessageSend();
        setGeneratedBy(get, source);
        get.sourceStart = pS;
        get.sourceEnd = get.statementEnd = pE;
        get.receiver = new ThisReference(pS, pE);
        get.selector = "firstOrDefault".toCharArray();
        get.arguments = new Expression[] { fieldNameRef };

        Assignment assignment = new Assignment(fieldRef, get, pE);
        setGeneratedBy(assignment, source);
        assignment.sourceStart = pS;
        assignment.sourceEnd = assignment.statementEnd = pE;

        statements.add(assignment);
    } else {
        Assignment assignment = new Assignment(fieldRef, fieldNameRef, pE);
        assignment.sourceStart = pS;
        assignment.sourceEnd = assignment.statementEnd = pE;
        setGeneratedBy(assignment, source);
        statements.add(assignment);
    }

    setReferencedObject.statements = statements.toArray(new Statement[statements.size()]);

    return setReferencedObject;
}

From source file:lombok.eclipse.handlers.HandleRelations.java

License:Open Source License

private static MethodDeclaration createSetRelatedIdMethod(ASTNode source, String relatedFieldName,
        boolean isOneToOne, TypeReference baseType, TypeReference referenceType, CompilationResult compResult) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long) pS << 32 | pE;

    MethodDeclaration setRelatedId = new MethodDeclaration(compResult);
    setGeneratedBy(setRelatedId, source);
    setRelatedId.modifiers = ClassFileConstants.AccPublic;
    setRelatedId.annotations = new Annotation[] {
            makeMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, source) };
    setRelatedId.returnType = TypeReference.baseTypeReference(TypeIds.T_void, 0);
    setRelatedId.returnType.sourceStart = pS;
    setRelatedId.returnType.sourceEnd = pE;

    TypeReference longRef = createTypeReference(Long.class, p);
    setGeneratedBy(longRef, source);//  w  w w  .  j  a  va 2  s  .  c o m
    longRef.sourceStart = pS;
    longRef.sourceEnd = pE;
    setRelatedId.arguments = new Argument[] {
            new Argument("item".toCharArray(), 0, (isOneToOne ? baseType : referenceType),
                    ClassFileConstants.AccFinal),
            new Argument("id".toCharArray(), 0, longRef, ClassFileConstants.AccFinal) };
    setGeneratedBy(setRelatedId.arguments[0], source);
    setGeneratedBy(setRelatedId.arguments[1], source);
    setRelatedId.arguments[0].sourceStart = pS;
    setRelatedId.arguments[0].sourceEnd = pE;
    setRelatedId.arguments[1].sourceStart = pS;
    setRelatedId.arguments[1].sourceEnd = pE;
    setRelatedId.selector = "setRelatedId".toCharArray();
    setRelatedId.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG;
    setRelatedId.bodyStart = setRelatedId.declarationSourceStart = setRelatedId.sourceStart = source.sourceStart;
    setRelatedId.bodyEnd = setRelatedId.declarationSourceEnd = setRelatedId.sourceEnd = source.sourceEnd;

    MessageSend setRelatedIdName = new MessageSend();
    setGeneratedBy(setRelatedIdName, source);
    setRelatedIdName.sourceStart = pS;
    setRelatedIdName.sourceEnd = setRelatedIdName.statementEnd = pE;
    setRelatedIdName.receiver = new SingleNameReference("item".toCharArray(), p);
    setGeneratedBy(setRelatedIdName.receiver, source);
    setRelatedIdName.receiver.sourceStart = pS;
    setRelatedIdName.receiver.sourceEnd = pE;
    setRelatedIdName.selector = ("set" + toProperCase(relatedFieldName)).toCharArray();
    setRelatedIdName.arguments = new Expression[] { new SingleNameReference("id".toCharArray(), p) };
    setGeneratedBy(setRelatedIdName.arguments[0], source);
    setRelatedIdName.arguments[0].sourceStart = pS;
    setRelatedIdName.arguments[0].sourceEnd = pE;

    setRelatedId.statements = new Statement[] { setRelatedIdName };

    return setRelatedId;
}