class FieldDefinitionAST extends DefinitionAST {
	private final DescAST type;

	/**
	 * @param line
	 * 		Line number this node is written on.
	 * @param start
	 * 		Offset from line start this node starts at.
	 * @param name
	 * 		Field name.
	 * @param type
	 * 		Field return type.
	 */
	public FieldDefinitionAST(int line, int start, NameAST name, DescAST type) {
		super(line, start, name);
		this.type = type;
	}

	/**
	 * @return Field access modifier nodes.
	 */
	public List<DefinitionModifierAST> getModifiers() {
		return modifiers;
	}

	/**
	 * @param modifier
	 * 		Modifier node to add.
	 */
	public void addModifier(DefinitionModifierAST modifier) {
		modifiers.add(modifier);
		addChild(modifier);
	}

	/**
	 * @return Field type.
	 */
	public DescAST getType() {
		return type;
	}

	@Override
	public String getDescriptor() {
		return getType().getDesc();
	}

	@Override
	public String print() {<FILL_FUNCTION_BODY>}
}

		String modifiersStr = getModifiers().stream().map(AST::print).collect(joining(" "));
		return "DEFINE " + modifiersStr + " " + getType().print() + " " + getName().print();
	
<methods>public void <init>(int, int, me.coley.recaf.parse.bytecode.ast.NameAST) ,public abstract java.lang.String getDescriptor() ,public me.coley.recaf.parse.bytecode.ast.NameAST getName() <variables>protected final List<me.coley.recaf.parse.bytecode.ast.DefinitionModifierAST> modifiers,protected final non-sealed me.coley.recaf.parse.bytecode.ast.NameAST name