code: def validate(self, pA, pB):
          
          if pA in pB.links or \
             pB in pA.links:
              raise Exception('Already linked')
          dA = pA.domains()
          dB = pB.domains()
          for d in dA:
              if d in dB:
                  raise Exception('Duplicate domain "%s" found' % d)
          for d in dB:
              if d in dA:
                  raise Exception('Duplicate domain "%s" found' % d)
          kA = pA.keys()
          kB = pB.keys()
          for k in kA:
              if k in kB:
                  raise Exception('Duplicate key %s found' % k)
          for k in kB:
              if k in kA:
                  raise Exception('Duplicate key %s found' % k)
          return self
docs: Validate that the two properties may be linked.
          @param pA: Endpoint (A) to link.
          @type pA: L{Endpoint}
          @param pB: Endpoint (B) to link.
          @type pB: L{Endpoint}
          @return: self
          @rtype: L{Link}