public HashSet<FieldRecord> getAndRemoveUnderExecMethodWithDirtyGetFieldInstr(
     FunctionStateKey methodCallInfo) {
   FunctionStateKeyMapValue value = fieldsToSetDirtyInUnderCallMethod.remove(methodCallInfo);
   if (value == null) {
     return null;
   }
   return (HashSet<FieldRecord>) value.getValue();
 }
  private void putInMap(
      HashMap<FunctionStateKey, FunctionStateKeyMapValue> map,
      FunctionStateKey callInfo,
      FieldRecord getFieldRecord) {

    FunctionStateKeyMapValue specialValue = map.get(callInfo);
    HashSet<FieldRecord> value = null;
    if (specialValue == null) {
      value = new HashSet<FieldRecord>();
      specialValue = new FunctionStateKeyMapValue(callInfo, value);
      map.put(callInfo, specialValue);
      value.add(getFieldRecord);
    } else {
      value = (HashSet<FieldRecord>) specialValue.getValue();
      value.add(getFieldRecord);
    }
  }
 public void updateHashMapUsingFSK() {
   FunctionStateKeyMapValue.update(fieldsToSetDirtyInUnderCallMethod);
   FunctionStateKeyMapValue.update(fieldsToSetDirtyAfterMethodCalled);
 }