anchor.diff:           label_pair/1]).
   
   -include("prometheus_model.hrl").
  +
  +-type label_name() :: term().
  +-type label_value() :: term().
  +-type label() :: {label_name(), label_value()}.
   
   %%%===================================================================
   %%% Public API
  
positive.code: 
  -spec counter_metric(Value) -> prometheus_model:'Metric'() when
      Value  :: {Labels, Val} | {Val} | Val,
      Labels :: [{_, _}],                          % FIXME: refine
      Val    :: non_neg_integer().
  counter_metric({Labels, Value}) -> counter_metric(Labels, Value);
  counter_metric({Value})         -> counter_metric([], Value);
  counter_metric(Value)           -> counter_metric([], Value).
  
  -spec counter_metric(Labels, Value) -> prometheus_model:'Metric'() when
      Labels :: [{_, _}],                         % FIXME: refine
      Value  :: non_neg_integer().
  counter_metric(Labels, Value) ->
    #'Metric'{label   = label_pairs(Labels),
  
negative.code: 
  -spec summary_metric(Spec) -> prometheus_model:'Metric'() when
      Spec   :: {Labels, Count, Sum} | {Count, Sum},
      Labels :: [label()],
      Count  :: non_neg_integer(),
      Sum    :: non_neg_integer().
  summary_metric({Labels, Count, Sum}) -> summary_metric(Labels, Count, Sum);
  