code: function getStructMembers (type, stateDefinitions, contractName, location) {
    var split = type.split('.')
    if (!split.length) {
      type = contractName + '.' + type
    } else {
      contractName = split[0]
    }
    var state = stateDefinitions[contractName]
    if (state) {
      for (var dec of state.stateDefinitions) {
        if (dec.name === 'StructDefinition' && type === contractName + '.' + dec.attributes.name) {
          var offsets = computeOffsets(dec.children, stateDefinitions, contractName, location)
          if (!offsets) {
            return null
          }
          return {
            members: offsets.typesOffsets,
            storageSlots: offsets.endLocation.slot
          }
        }
      }
    }
    return null
  }
docs: retrieve memebers declared in the given @arg tye
  
  @param {String} typeName - name of the struct type (e.g struct <name>)
  @param {Object} stateDefinitions  - all state definition given by the AST (including struct and enum type declaration) for all contracts
  @param {String} contractName - contract the @args typeName belongs to
  @param {String} location - location of the data (storage ref| storage pointer| memory| calldata)
  @return {Array} containing all members of the current struct type