question: public AccessPath dropFirstField ( ) { if ( fields == null || fields . length == 0 ) return this ; final SootField [ ] newFields ; final Type [ ] newTypes ; if ( fields . length > 1 ) { newFields = new SootField [ fields . length - 1 ] ; System . arraycopy ( fields , 1 , newFields , 0 , fields . length - 1 ) ; newTypes = new Type [ fields . length - 1 ] ; System . arraycopy ( fieldTypes , 1 , newTypes , 0 , fields . length - 1 ) ; } else { newFields = null ; newTypes = null ; } return new AccessPath ( value , newFields , fieldTypes [ 0 ] , newTypes , taintSubFields ) ; }
target:  Gets a copy of this access path, but drops the first field. If this access path has no fields, the identity is returned.