class BgpSessionCompatibilityAnswerer extends Answerer {

  @Nonnull
  @VisibleForTesting
  static Row getUnnumberedPeerRow(
      BgpPeerConfigId unnumId,
      BgpUnnumberedPeerConfig unnumPeer,
      ValueGraph<BgpPeerConfigId, BgpSessionProperties> configuredTopology) {
    ConfiguredSessionStatus status = getConfiguredStatus(unnumId, unnumPeer, configuredTopology);
    Node remoteNode = null;
    NodeInterfacePair remoteInterface = null;
    Long localAs = unnumPeer.getLocalAs();
    String remoteAs = unnumPeer.getRemoteAsns().toString();
    Set<Type> addressFamilies = ImmutableSet.of();
    if (status == UNIQUE_MATCH) {
      BgpPeerConfigId remoteId = configuredTopology.adjacentNodes(unnumId).iterator().next();
      remoteNode = new Node(remoteId.getHostname());
      remoteInterface = NodeInterfacePair.of(remoteId.getHostname(), remoteId.getPeerInterface());
      Optional<BgpSessionProperties> sessionProps = configuredTopology.edgeValue(unnumId, remoteId);
      if (sessionProps.isPresent()) {
        remoteAs = Long.toString(sessionProps.get().getHeadAs());
        localAs = sessionProps.get().getTailAs();
        addressFamilies = sessionProps.get().getAddressFamilies();
      }
    }
    return Row.builder(METADATA_MAP)
        .put(COL_CONFIGURED_STATUS, status)
        .put(
            COL_LOCAL_INTERFACE,
            NodeInterfacePair.of(unnumId.getHostname(), unnumPeer.getPeerInterface()))
        .put(COL_LOCAL_AS, localAs)
        .put(COL_LOCAL_IP, null)
        .put(COL_NODE, new Node(unnumId.getHostname()))
        .put(COL_REMOTE_AS, remoteAs)
        .put(COL_REMOTE_NODE, remoteNode)
        .put(COL_REMOTE_INTERFACE, remoteInterface)
        .put(COL_REMOTE_IP, null)
        .put(COL_ADDRESS_FAMILIES, addressFamilies)
        .put(COL_SESSION_TYPE, getSessionType(unnumPeer))
        .put(COL_VRF, unnumId.getVrfName())
        .build();
  }

  public  BgpSessionCompatibilityAnswerer(Question question, IBatfish batfish);

}