code: @Override
      public Set<KamEdge> getAdjacentEdges(KamNode kamNode,
              EdgeDirectionType edgeDirection, EdgeFilter filter) {
  
          Set<KamEdge> adjacentEdges = new LinkedHashSet<KamEdge>();
  
          if (EdgeDirectionType.FORWARD == edgeDirection
                  || EdgeDirectionType.BOTH == edgeDirection) {
  
              final Set<KamEdge> sources = nodeSourceMap.get(kamNode);
              if (hasItems(sources)) {
                  for (KamEdge kamEdge : sources) {
  
                      // Check for an edge filter
                      if (null != filter) {
                          if (!filter.accept(kamEdge)) {
                              continue;
                          }
                      }
                      adjacentEdges.add(kamEdge);
                  }
              }
          }
          if (EdgeDirectionType.REVERSE == edgeDirection
                  || EdgeDirectionType.BOTH == edgeDirection) {
              final Set<KamEdge> targets = nodeTargetMap.get(kamNode);
              if (hasItems(targets)) {
                  for (KamEdge kamEdge : targets) {
  
                      // Check for an edge filter
                      if (null != filter) {
                          if (!filter.accept(kamEdge)) {
                              continue;
                          }
                      }
                      adjacentEdges.add(kamEdge);
                  }
              }
          }
          return adjacentEdges;
      }
docs: {@inheritDoc}