Field getFieldWithPos(int position_) {
        if (isPrimitive != null) { // if this is a primitive
            return null;
            //throw new ASNException("Cannot get subfield's position for a Primitive Type");
        }
        if (position_ != 6) { // Optimization for Tag 6 Object Identifier.
            for (int i = 0; i < fields.length; i++) {
                if (fields[i].pos == position_) {
                    return fields[i];
                }
            }
        } else {
            int emptyPos = -1;
            for (int i = 0; i < fields.length; i++) {
                if (fields[i].pos == position_) {
                    return fields[i];
                }
                if (fields[i].pos < 0) {
                    emptyPos = i;
                }
            }
            if (emptyPos != -1) { // We hit an empty Pos
                //System.out.println("Here...OBJECT IDENTIFIER");
                if (fields[emptyPos].type.name.equals("OBJECT IDENTIFIER")) {
                    return fields[emptyPos];
                }
            }
        }
        return null;
        //throw new ASNException("Unable to find subfield's position " + position + " inside ASNClass \"" + this.name + "\"" );
    }