docs: def forward(self, features, proposals, targets=None):
          """
          Arguments:
              features (list[Tensor]): feature-maps from possibly several levels
              proposals (list[BoxList]): proposal boxes
              targets (list[BoxList], optional): the ground-truth targets.
  
          Returns:
              x (Tensor): the result of the feature extractor
              proposals (list[BoxList]): during training, the original proposals
                  are returned. During testing, the predicted boxlists are returned
                  with the `mask` field set
              losses (dict[Tensor]): During training, returns the losses for the
                  head. During testing, returns an empty dict.
          """
  
          if self.training:
              # during training, only focus on positive boxes
              all_proposals = proposals
              proposals, positive_inds = keep_only_positive_boxes(proposals)
          if self.training and self.cfg.MODEL.ROI_MASK_HEAD.SHARE_BOX_FEATURE_EXTRACTOR:
              x = features
              x = x[torch.cat(positive_inds, dim=0)]
          else:
              x = self.feature_extractor(features, proposals)
          mask_logits = self.predictor(x)
  
          if not self.training:
              result = self.post_processor(mask_logits, proposals)
              return x, result, {}
  
          loss_mask = self.loss_evaluator(proposals, mask_logits, targets)
  
          return x, all_proposals, dict(loss_mask=loss_mask)