Should this be memoized? It seems to use the object state, so I wonder if it is idempotent.