docs: def structureLink(lines):
      """
      Parse STRUCTURE LINK Method
      """
      # Constants
      KEYWORDS = ('LINK',
                  'STRUCTURE',
                  'NUMSTRUCTS',
                  'STRUCTTYPE')
  
      WEIR_KEYWORDS = ('STRUCTTYPE',
                       'CREST_LENGTH',
                       'CREST_LOW_ELEV',
                       'DISCHARGE_COEFF_FORWARD',
                       'DISCHARGE_COEFF_REVERSE',
                       'CREST_LOW_LOC',
                       'STEEP_SLOPE',
                       'SHALLOW_SLOPE')
  
      CULVERT_KEYWORDS = ('STRUCTTYPE',
                          'UPINVERT',
                          'DOWNINVERT',
                          'INLET_DISCH_COEFF',
                          'REV_FLOW_DISCH_COEFF',
                          'SLOPE',
                          'LENGTH',
                          'ROUGH_COEFF',
                          'DIAMETER',
                          'WIDTH',
                          'HEIGHT')
  
      WEIRS = ('WEIR', 'SAG_WEIR')
  
      CULVERTS = ('ROUND_CULVERT', 'RECT_CULVERT')
  
      CURVES = ('RATING_CURVE', 'SCHEDULED_RELEASE', 'RULE_CURVE')
  
      result = {'type': 'STRUCTURE',
                'header': {'link': None,
                           'numstructs': None},
                'structures':[]}
  
      chunks = pt.chunk(KEYWORDS, lines)
  
      # Parse chunks associated with each key
      for key, chunkList in iteritems(chunks):
          # Parse each chunk in the chunk list
          for chunk in chunkList:
              # Cases
              if key == 'STRUCTTYPE':
                  # Structure handler
                  structType = chunk[0].strip().split()[1]
  
                  # Cases
                  if structType in WEIRS:
  
                      weirResult = {'structtype': None,
                                    'crest_length': None,
                                    'crest_low_elev': None,
                                    'discharge_coeff_forward': None,
                                    'discharge_coeff_reverse': None,
                                    'crest_low_loc': None,
                                    'steep_slope': None,
                                    'shallow_slope': None}
  
                      # Weir type structures handler
                      result['structures'].append(structureChunk(WEIR_KEYWORDS, weirResult, chunk))
  
                  elif structType in CULVERTS:
  
                      culvertResult = {'structtype': None,
                                       'upinvert': None,
                                       'downinvert': None,
                                       'inlet_disch_coeff': None,
                                       'rev_flow_disch_coeff': None,
                                       'slope': None,
                                       'length': None,
                                       'rough_coeff': None,
                                       'diameter': None,
                                       'width': None,
                                       'height': None}
  
                      # Culvert type structures handler
                      result['structures'].append(structureChunk(CULVERT_KEYWORDS, culvertResult, chunk))
  
                  elif structType in CURVES:
                      # Curve type handler
                      pass
              elif key != 'STRUCTURE':
                  # All other variables header
                  result['header'][key.lower()] = chunk[0].strip().split()[1]
  
      return result