class SubroutineArgumentDeclaration implements DataTyped {

    @Override
    public boolean equals(final Object obj) {
        if (obj == this) {
            return true;
        }

        if (!(obj instanceof SubroutineArgumentDeclaration)) {
            return false;
        }

        final SubroutineArgumentDeclaration other = (SubroutineArgumentDeclaration) obj;
        return new EqualsBuilder().append(name, other.name).append(dataType, other.dataType)
                .append(isByRef, other.isByRef).isEquals();
    }

    public  SubroutineArgumentDeclaration(final String name);
    public  SubroutineArgumentDeclaration(final String name, final DataType dataType);
    public  SubroutineArgumentDeclaration(final String name, final boolean isByRef, final DataType dataType);

}